

let arr = [1,2,3,3,4,2,2,6,8,4]

/**
 * 利用集合元素的唯一性去重
 * @param {*} arr 
 */
function unique(arr){
    return Array.from(new Set(arr))
}


/**
 * 利用双重for循环，遇到重复的元素就移除
 * @param {*} arr 
 */
function unique1(arr){
    for(let i=0, len=arr.length; i<len; i++){
        for(let j=i+1, len=arr.length; j<len; j++){
            if(arr[i] === arr[j]){
                arr.splice(j, 1)
                j--
                len--
            }
        }
    }
    return arr
}


/**
 * indexof(item,[index])
 * 返回元素在数组中的索引，没有则返回-1
 * 创建一个临时数组，遍历原数组，如果元素组元素在临时数组中不存在，则添加到临时数组中
 * @param {*} arr 
 */
function unique2(arr){
    let arr1 = []
    for(let i=0, len=arr.length; i<len; i++){
        if(arr1.indexOf(arr[i]) === -1){
            arr1.push(arr[i])
        }
    }
    return arr1
}


/**
 * 相邻元素对比法
 * @param {*} arr 
 */
function unique3(arr){
    arr = arr.sort()
    let arr1 = [arr[0]]
    for(let i=1,len=arr.length; i<len; i++){
        if(arr[i]!==arr[i-1]){
            arr1.push(arr[i])
        }
    }
    return arr1
}


/**
 * 和indexOf相似，利用includes
 * @param {*} arr 
 */
function unique4(arr){
    let arr1 = []
    for(let i=0, len=arr.length; i<len; i++){
        if(!arr1.includes(arr[i])){
            arr1.push(arr[i])
        }
    }
    return arr1
}


/**
 * 利用数组方法filter遍历元素
 * @param {}} arr 
 */
function unique5(arr){
    return arr.filter((item,index)=>{
        return arr.indexOf(item,0) === index
    })
}

function unique6(arr){
    let map = new Map();
    arr1 = [];
    for(let i=0,len=arr.length; i<len; i++){
        if(map.has(arr[i])){
            map.set(arr[i], true)
        }else{
            map.set(arr[i], false)
            arr1.push(arr[i])
        }
    }
    return arr1
}

// console.log(unique6(arr))
let i = null && 1
console.log(i)

